<?php
require_once "functions.php";
require_once "constantes.php";

//session_start();

class Connection {
	public $mysql;
	
    function __construct($phost, $pdbuser, $pdbpass, $pdbname) {
	    $this->mysql = new mysqli($phost, $pdbuser, $pdbpass, $pdbname);
	    if ($this->mysql->errno) {
	    	echo "Fallo al conectar. Error: " . die(mysqli_connect_error());
		}
		$this->mysql->query("SET NAMES 'utf8'");
    }
    function __destruct() {
    	$this->mysql->close();
    }
}

$connection=new Connection('localhost','root','root','stick_wars');


class Noticia {
	public $id=null;
	public $titulo=null;
	public $texto=null;
	public $fecha=null;
	
	public static function eliminarNoticia($id){
		global $connection;
		$query = $connection->mysql->query("DELETE FROM noticias WHERE id_noticia='".$id."'");
		return $query;
	}
	public static function guardarNoticia($id,$titulo,$texto){
		global $connection;
		$query = $connection->mysql->query("UPDATE noticias SET titulo='$titulo', texto='$texto' WHERE id_noticia='".$id."'");
		return $query;
	}
	public static function insertarNoticia($titulo,$texto){
		global $connection;
		$query = $connection->mysql->query("INSERT INTO noticias (titulo,texto,fecha) VALUES('$titulo', '$texto', NOW())");
		return $query;
	}
}

class Noticias {
	public $noticias=array();
	
	public function getUltimasNoticias($limite){
		global $connection;
		$query=$connection->mysql->query('SELECT * FROM noticias ORDER BY fecha desc');
		$cont=0;
		while (($result = $query->fetch_array(MYSQLI_BOTH)) && $cont<$limite){
			$noticia=new Noticia();
			$noticia->id=$result['id_noticia'];
			$noticia->titulo=$result['titulo'];
			$noticia->texto=$result['texto'];
			$noticia->fecha=$result['fecha'];
			$this->noticias[]=$noticia;
			$cont++;
		}
	}
}

class User {
	public $nombre=null;
	public $email=null;
	public $id=null;
	public $avatar=null;
	public $admin=null;
	
	function __construct($user){
		$this->load($user);
	}
	public function load ($user){
		global $conexion;
		if($data=User::getUserByName($user)){
			$this->nombre=$data['user'];
			$this->email=$data['email'];
			$this->admin=$data['admin'];
			$this->id=$data['id_user'];
			$this->avatar=$data['avatar'];
			return true;
		} else return false;
	}
	public function volcarSesion (){
		global $connection;
		$query = $connection->mysql->query("UPDATE usuarios SET user='".$this->nombre."',
		 email='".$this->email."', admin='".$this->admin."',
		  avatar='".$this->avatar."' WHERE id_user='".$this->id."'");
	}
	public static function checkUser($user, $pass){
		global $connection;
		$encripted=sha1(md5($pass));
		$result=$connection->mysql->query("SELECT * FROM usuarios WHERE user='".$user."' AND pass='".$encripted."'");
		if ($result->fetch_array(MYSQLI_BOTH)){
			return true;
		}else return false;
	}
	public static function checkUserEncripted($user, $encripted){
		global $connection;
		$result=$connection->mysql->query("SELECT * FROM usuarios WHERE user='".$user."' AND pass='".$encripted."'");
		if ($result->fetch_array(MYSQLI_BOTH)){
			return true;
		}else return false;
	}
	public static function existUser($user){
		global $connection;
		$result=$connection->mysql->query("SELECT * FROM usuarios WHERE user='".$user."'");
		if ($result->fetch_array(MYSQLI_BOTH)){
			return true;
		}else return false;
	}
	public static function getUserByName ($user) {
		global $connection;
		$query=$connection->mysql->query("SELECT * FROM usuarios WHERE user='".$user."'");
		return $query->fetch_array(MYSQLI_BOTH);
	}
	public static function guardarDatosSesion($user){
		$usuario=new User($user);
		$_SESSION['usuario']=serialize($usuario);
		$estadisticas=new Estadisticas($usuario->id);
		$_SESSION['estadisticas']=serialize($estadisticas);
		$edificios=new Edificios($usuario->id);
		$_SESSION['edificios']=serialize($edificios);
		$tropas=new Tropas($usuario->id);
		$_SESSION['tropas']=serialize($tropas);
	}
	public static function existEmail($email){
		global $connection;
		$result=$connection->mysql->query("SELECT * FROM usuarios WHERE email='".$email."'");
		if ($result->fetch_array(MYSQLI_BOTH)){
			return true;
		}else return false;
	}
	public static function createUser ($user, $pass, $email) {
		global $connection;
		$query1=$connection->mysql->query("INSERT INTO usuarios (user,pass,email,admin,avatar,f_registro)	VALUES('".$user."', '".$pass."', '".$email."', 'no', './avatares/default.png', NOW())");
		$row=User::getUserByName($user);
		$query2=$connection->mysql->query("INSERT INTO estadisticas (id_user,last_update)	VALUES('".$row['id_user']."',NOW() )");
		$query3=$connection->mysql->query("INSERT INTO edificios (id_user)	VALUES('".$row['id_user']."')");
		$query4=$connection->mysql->query("INSERT INTO cuartel (id_user)	VALUES('".$row['id_user']."')");
		$query5=$connection->mysql->query("INSERT INTO datos (id_user)	VALUES('".$row['id_user']."')");
		if($query1 && $query2 && $query3 && $query4 && $query5) {
			return true;
		}else return false;
	}
	public static function getUserById ($id_user) {
		global $connection;
		$query=$connection->mysql->query("SELECT * FROM usuarios WHERE id_user='".$id_user."'");
		return $query->fetch_array(MYSQLI_BOTH);
	}
	public static function getUserId ($user) {
		global $connection;
		$query=$connection->mysql->query("SELECT id_user FROM usuarios WHERE user='".$user."'");
		$return=$query->fetch_array(MYSQLI_BOTH);
		return $return['id_user'];
	}
}

class Estadisticas {
	public $rank=null;
	public $carbon=null;
	public $plastico=null;
	public $victorias=null;
	public $derrotas=null;
	public $last_update=null;
	
	function __construct($id_user){
		$this->load($id_user);
	}
	public function load ($id_user){
		global $conexion;
		if($data=Estadisticas::getEstadisticas($id_user)){
			$this->rank=$data['rank'];
			$this->carbon=$data['carbon'];
			$this->plastico=$data['plastico'];
			$this->victorias=$data['victoria'];
			$this->derrotas=$data['derrotas'];
			$this->last_update = new DateTime($data['last_update'],  new DateTimeZone('Europe/Madrid'));
			date_default_timezone_set('Europe/Madrid'); 
			//$this->last_update = $fecha->format("d/m/y g:i:s A");
			//$this->last_update=$data['last_update'];
			return true;
		} else return false;
	}
	public function volcarSesion ($id_user){
		global $connection;
		$fecha=date("Y-m-d H:i:s", strtotime(str_replace('/','-',$this->last_update->format("Y-m-d H:i:s"))));
		$query = $connection->mysql->query("UPDATE estadisticas SET carbon='".$this->carbon."',
		 plastico='".$this->plastico."', victoria='".$this->victorias."',
		  derrotas='".$this->derrotas."', last_update='".$fecha."' WHERE id_user='".$id_user."'");
	}
	public static function getEstadisticas ($id_user) {
		global $connection;
		$query = $connection->mysql->query("SELECT * FROM estadisticas WHERE id_user='".$id_user."'");
		return $query->fetch_array(MYSQL_BOTH);
	}
	public static function getRank($pagina,$limite){
		global $connection;
		$query=$connection->mysql->query('SELECT user, rank FROM estadisticas, usuarios WHERE usuarios.id_user=estadisticas.id_user ORDER BY rank desc LIMIT '.$pagina*$limite.','.$limite);
		for($i=0;$i<$limite;$i++){
			$array[]=$query->fetch_array(MYSQL_NUM);
		}
		$countQuery=$connection->mysql->query('SELECT COUNT(id_user) FROM estadisticas');
		$nFilas=$countQuery->fetch_array(MYSQL_NUM);
		$array[]=$nFilas[0];
		return $array;
	}
	public static function getBusquedaRank($nombre){
		global $connection;
		$query=$connection->mysql->query('SELECT user, rank FROM estadisticas, usuarios WHERE usuarios.user="'.$nombre.'" AND usuarios.id_user=estadisticas.id_user');
		if($array[]=$query->fetch_array(MYSQL_NUM)){
			$countQuery=$connection->mysql->query('SELECT COUNT(id_user) FROM estadisticas');
			$nFilas=$countQuery->fetch_array(MYSQL_NUM);
			$array[]=$nFilas[0];
			return $array;
		}else return false;
	}
	public function updateSession(){
		$_SESSION['estadisticas']=serialize($this);
	}
	public function updateRecursos(){
		$fechaActual = new DateTime('now', new DateTimeZone('Europe/Madrid'));
		date_default_timezone_set('Europe/Madrid'); 
		$diff=$this->last_update->diff($fechaActual);
		$meses=$diff->format('%m');
		$totalSegs=($meses=='0' ? 0 : intval($meses)*30*24*60*60);
		$dias=$diff->format('%d');
		$totalSegs+=($dias=='0' ? $totalSegs : intval($dias)*24*60*60);
		$horas=$diff->format('%h');
		$totalSegs+=($horas=='0' ? $totalSegs : intval($horas)*60*60);
		$mins=$diff->format('%i');
		$totalSegs+=($mins=='0' ? $totalSegs : intval($mins)*60);
		$segs=$diff->format('%s');
		$totalSegs+=($segs=='0' ? $totalSegs : intval($segs));
		//echo $meses."+".$dias."+".$horas."+".$mins."+".$segs."=".$totalSegs;
		
		$edificios=unserialize($_SESSION['edificios']);
		$this->carbon+=($edificios->mina_c!=0 ? rateCarbon*$edificios->mina_c*$totalSegs : rateCarbon*0.5*$totalSegs); //tasaRecursosPorSegundo * nivelEdificio * segundosPasados
		//echo " - Carbon actual:".$this->carbon." - Carbon aumentar:".(0.02*$edificios->mina_c*$totalSegs);
		$this->plastico+=($edificios->fabrica_p!=0 ? ratePlastico*$edificios->fabrica_p*$totalSegs : ratePlastico*0.5*$totalSegs); //tasaRecursosPorSegundo * nivelEdificio * segundos que han pasado
		//echo " - Plastico actual:".$this->plastico." - Plastico aumentar:".(0.02*$edificios->fabrica_p*$totalSegs);
		$this->last_update=new DateTime('now', new DateTimeZone('Europe/Madrid'));
	}
	public static function addRank($puntos,$idUser){
		global $connection;
		$estadisticas=unserialize($_SESSION['estadisticas']);
		$estadisticas->rank+=$puntos;
		if($estadisticas->rank<0) $estadisticas->rank=0;
		$_SESSION['estadisticas']=serialize($estadisticas);
		$connection->mysql->query("UPDATE estadisticas SET rank='".$estadisticas->rank."' WHERE id_user='$idUser'");
	}
}

class Edificios {
	public $mina_c=null;
	public $fabrica_p=null;
	public $cuartel=null;
	public $laboratorio=null;
	public $tec_pvc=null;
	public $tec_carbono=null;
	public $tec_aleacion=null;
	public $tec_diamante=null;
	
	function __construct($id_user){
		$this->load($id_user);
	}
	public function load ($id_user){
		global $conexion;
		if($data=Edificios::getEdificios($id_user)){
			$this->mina_c=$data['mina_c'];
			$this->fabrica_p=$data['fabrica_p'];
			$this->cuartel=$data['cuartel'];
			$this->laboratorio=$data['laboratorio'];
			$this->tec_pvc=$data['tec_pvc'];
			$this->tec_carbono=$data['tec_carbono'];
			$this->tec_aleacion=$data['tec_aleacion'];
			$this->tec_diamante=$data['tec_diamante'];
			return true;
		} else return false;
	}
	public static function getEdificios ($id_user) {
		global $connection;
		$query = $connection->mysql->query("SELECT * FROM edificios WHERE id_user='".$id_user."'");
		return $query->fetch_array(MYSQL_BOTH);
	}
	public function guardarEdificios($id_user){
		global $connection;
		$query=$connection->mysql->query("UPDATE edificios SET mina_c=$this->mina_c,
			fabrica_p=$this->fabrica_p, cuartel=$this->cuartel, laboratorio=$this->laboratorio,
			tec_pvc=$this->tec_pvc, tec_carbono=$this->tec_carbono, tec_aleacion=$this->tec_aleacion,
			tec_diamante=$this->tec_diamante WHERE id_user='$id_user'");
		return $query?true:false;
	}
}

class Construccion {
	public $id=null;
	public $nombre=null;
	public $nivel=null;
	public $descripcion=null;
	public $avatar=null;
	public $tiempoInicial=null;
	public $carbonInicial=null;
	public $plasticoInicial=null;
	
	function __construct($id_edificio){
		if(isset($id_edificio)){
			$this->load($id_edificio);
		}
	}
	public function load ($id_edificio){
		global $conexion;
		if($data=Construccion::getConstruccion($id_edificio)){
			$this->id=$id_edificio;
			$this->nombre=$data['nombre'];
			$this->descripcion=$data['descripccion'];
			$this->avatar=$data['avatar'];
			$this->nivel=$data['nivel'];
			$this->carbonInicial=$data['carbonInicial'];
			$this->plasticoInicial=$data['plasticoInicial'];
			$this->tiempoInicial=new DateTime($data['tiempoInicial'],  new DateTimeZone('Europe/Madrid'));
			date_default_timezone_set('Europe/Madrid'); 
		}
	}
	public static function getConstruccion ($id_edificio) {
		global $connection;
		$query=$connection->mysql->query("SELECT * FROM construcciones WHERE id_edificio='".$id_edificio."'");
		$array=$query->fetch_array(MYSQL_BOTH);
		$edificios=unserialize($_SESSION['edificios']);
		switch ($id_edificio){
			case 1: $array['nivel']=$edificios->mina_c; break;
			case 2: $array['nivel']=$edificios->fabrica_p; break;
			case 3: $array['nivel']=$edificios->cuartel; break;
			case 4: $array['nivel']=$edificios->laboratorio; break;
			case 5: $array['nivel']=$edificios->tec_pvc; break;
			case 6: $array['nivel']=$edificios->tec_carbono; break;
			case 7: $array['nivel']=$edificios->tec_aleacion; break;
			case 8: $array['nivel']=$edificios->tec_diamante; break;
		}
		return $array;
	}
}

class Tropas {
	public $troglodita=null;
	public $espadachin=null;
	public $tirachinas=null;
	public $caballero=null;
	public $arquero=null;
	public $jinete=null;
	public $mago=null;
	public $pinguino=null;
	
	function __construct($id_user){
		$this->load($id_user);
	}
	public function load ($id_user){
		global $conexion;
		if($data=Tropas::getTropas($id_user)){
			$this->troglodita=$data['troglodita'];
			$this->espadachin=$data['espadachin'];
			$this->tirachinas=$data['tirachinas'];
			$this->caballero=$data['caballero'];
			$this->arquero=$data['arquero'];
			$this->jinete=$data['jinete'];
			$this->mago=$data['mago'];
			$this->pinguino=$data['pinguino'];
			return true;
		} else return false;
	}
	public static function getTropas ($id_user) {
		global $connection;
		$query = $connection->mysql->query("SELECT * FROM cuartel WHERE id_user='".$id_user."'");
		return $query->fetch_array(MYSQL_BOTH);
	}
	public function guardarTropas($id_user){
		global $connection;
		$query=$connection->mysql->query("UPDATE cuartel SET troglodita=$this->troglodita,
			espadachin=$this->espadachin, tirachinas=$this->tirachinas, caballero=$this->caballero,
			arquero=$this->arquero, jinete=$this->jinete, mago=$this->mago,
			pinguino=$this->pinguino WHERE id_user='$id_user'");
		return $query?true:false;
	}
}

class Unidad {
	public $id=null;
	public $nombre=null;
	public $cantidad=null;
	public $descripcion=null;
	public $avatar=null;
	public $tiempoInicial=null;
	public $carbonInicial=null;
	public $plasticoInicial=null;
	
	function __construct($id_unidad){
		if(isset($id_unidad)){
			$this->load($id_unidad);
		}
	}
	public function load ($id_unidad){
		global $conexion;
		if($data=Unidad::getUnidad($id_unidad)){
			$this->id=$id_unidad;
			$this->nombre=$data['nombre'];
			$this->descripcion=$data['descripcion'];
			$this->avatar=$data['avatar'];
			$this->cantidad=$data['cantidad'];
			$this->carbonInicial=$data['carbonInicial'];
			$this->plasticoInicial=$data['plasticoInicial'];
			$this->tiempoInicial=new DateTime($data['tiempoInicial'],  new DateTimeZone('Europe/Madrid'));
			date_default_timezone_set('Europe/Madrid'); 
			//$this->ataque=$data['ataque'];
			//$this->defensa=$defensa['defensa'];
		}
	}
	public static function getUnidad ($id_unidad) {
		global $connection;
		$query=$connection->mysql->query("SELECT * FROM unidades WHERE id_unidad='".$id_unidad."'");
		$array=$query->fetch_array(MYSQL_BOTH);
		$tropas=unserialize($_SESSION['tropas']);
		switch ($id_unidad){
			case 1: $array['cantidad']=$tropas->troglodita; break;
			case 2: $array['cantidad']=$tropas->espadachin; break;
			case 3: $array['cantidad']=$tropas->tirachinas; break;
			case 4: $array['cantidad']=$tropas->caballero; break;
			case 5: $array['cantidad']=$tropas->arquero; break;
			case 6: $array['cantidad']=$tropas->jinete; break;
			case 7: $array['cantidad']=$tropas->mago; break;
			case 8: $array['cantidad']=$tropas->pinguino; break;
		}
		return $array;
	}
}

class Buzon {
	public $id_emisor=null;
	public $id_receptor=null;
	public $id_mensaje=null;
	public $estado=null;
	public $f_mensaje=null;
	public $asunto=null;
	public $contenido=null;
	
	public function load ($id_user){
		global $conexion;
		if($data=Buzon::getBuzon($id_user)){
			$this->id_emisor=$data['id_emisor'];
			$this->id_receptor=$data['id_receptor'];
			$this->id_mensaje=$data['id_mensaje'];
			$this->estado=$data['estado'];
			$this->f_mensaje=$data['f_mensaje'];
			$this->asunto=$data['asunto'];
			$this->contenido=$data['contenido'];
			return true;
		} else return false;
	}
	public static function mensaje_enviado($id_usuario, $nom_dest, $asunto, $contenido){
		global $connection;
		$query = $connection->mysql->query("SELECT * FROM usuarios WHERE user='".$id_usuario."'");
		echo "esssssss->".$id_usuario;
		$array = array();
		$array[]=$query->fetch_array(MYSQL_ASSOC);
		return $array;
		/*global $connection;
		$conexion=mysql_connect("localhost","root","root");
		mysql_select_db("stick_wars");
		$info="SELECT * FROM usuarios WHERE user='$id_usuario'";
		$result=mysql_query($info);
			
			if($result)	{
					return true;
			}else{
					return false;
			}*/
		/*while ($ver = mysql_fetch_assoc(result)) {
			echo "iiiiiu";
		$id_receptor = $ver['id_user'];
		echo "este es->".$id_receptor;
		}*/
		/*echo $nom_dest;
		
		$query = $connection->mysql->query("SELECT id_user FROM usuarios where user='".$nom_dest."'");
		
	  while ($ver = $query->fetch_array(MYSQL_ASSOC)) {
		$id_receptor = $ver['id_user'];
		echo $id_receptor;
		}*/

		/*$query2 = $connection->mysql->query("INSERT INTO buzon (id_emisor,id_receptor,asunto,contenido,f_mensaje) VALUES ('".$id_usuario."','".$id_receptor."','".$asunto."','".$contenido."',NOW())");
        if($query2){
        reurn true;	
        }else{
        	return false;
        }*/
		
	}
	public static function getBuzon ($id_men) {
		global $connection;
		$query = $connection->mysql->query("SELECT * FROM buzon WHERE id_mensaje='".$id_men."'");
		$array = array();
		$array[]=$query->fetch_array(MYSQL_ASSOC);
		return $array;
	}
	
}

class TiposEventos{
	const CONSTRUCCION="construccion";
	const TROPAS="tropas";
	const ATAQUE="ataque";
}

class Evento{
	public $fInicio=null;
	public $fFinal=null;
	public $tipo=null;
	public $cInvertido=null;
	public $pInvertido=null;
	public $descripcion=null;
	public $idEvento=null;
	public $idObjetivo=null;
	public $idUsuario=null;
	
	function newEvento($f_inicio,$f_final,$tipo,$c_invertido,$p_invertido,$descripcion,$id_objetivo,$id_usuario){
		global $connection;	
		$this->fInicio=new DateTime($f_inicio,  new DateTimeZone('Europe/Madrid'));
		//$this->fInicio=$this->fInicio->format("d/m/y g:i:s A");
		$this->fFinal=new DateTime($f_final,  new DateTimeZone('Europe/Madrid'));
		$this->tipo=$tipo;
		$this->cInvertido=$c_invertido;
		$this->pInvertido=$p_invertido;
		$this->descripcion=$descripcion;
		$this->idObjetivo=$id_objetivo;
		$this->idUsuario=$id_usuario;
		if(!isset($id_evento)){
			date_default_timezone_set('Europe/Madrid');
			$f_final=date("Y-m-d H:i:s", strtotime(str_replace('/','-',$this->fFinal->format("Y-m-d H:i:s"))));
			$query=$connection->mysql->query("INSERT INTO eventos (f_inicio,f_final,tipo,c_invertido,p_invertido,descripcion,id_objetivo,id_usuario) VALUES (NOW(),'".$f_final."','".$tipo."',$c_invertido,$p_invertido,'$descripcion',$id_objetivo,$id_usuario);");
			$this->idEvento=Evento::getIdEvento($descripcion);
		}else $this->idEvento=$id_evento;
		return $query ? true:false;
	}
	function load($idEvento){
		global $connection;
		if($data=Evento::getEvento($idEvento)){
			$this->fInicio=new DateTime($data['f_inicio'],  new DateTimeZone('Europe/Madrid'));
			$this->fFinal=new DateTime($data['f_final'],  new DateTimeZone('Europe/Madrid'));
			date_default_timezone_set('Europe/Madrid');
			$this->tipo=$data['tipo'];
			$this->cInvertido=$data['c_invertido'];
			$this->pInvertido=$data['p_invertido'];
			$this->descripcion=$data['descripcion'];
			$this->idEvento=$idEvento;
			$this->idObjetivo=$data['id_objetivo'];
			$this->idUsuario=$data['id_usuario'];
			return true;
		} else return false;
	}
	function imBussy($tipoEvento) {
		return $tipoEvento==$this->tipo ? true:false;
	}
	function getEvento($idEvento) {
		global $connection;
		$query = $connection->mysql->query("SELECT * FROM eventos WHERE id_evento='".$idEvento."'");
		return $query->fetch_array(MYSQL_BOTH);
	}
	public static function deleteEvento($idEvento) {
		global $connection;
		$query = $connection->mysql->query("DELETE FROM eventos WHERE id_evento='".$idEvento."'");
		return $query;
	}
	public static function getIdEvento($descripcion) {
		global $connection;
		$query = $connection->mysql->query("SELECT id_evento FROM eventos WHERE descripcion='".$descripcion."'");
		$result=$query->fetch_array(MYSQL_BOTH);
		return $result['id_evento'];
	}
	public function saveEvento() {
		global $connection;
		$query = $connection->mysql->query("INSERT INTO eventos VALUES(	
			$this->idEvento, $this->fInicio, $this->fFinal, $this->tipo,
			$this->cInvertido, $this->pInvertido,$this->descripcion,
			$this->idObjetivo,$this->idUsuario)");
		$result=$query->fetch_array(MYSQL_BOTH);
		return $result['id_evento'];
	}
	public function estaFinalizado(){
		$fActual= new DateTime('now', new DateTimeZone('Europe/Madrid'));
		$fActual=$fActual->getTimestamp();
		$fFinal=$this->fFinal->getTimestamp();
		return $fFinal<=$fActual+5 ? true:false; //Con el 5 damos un margen de retardo de 5s en la ejecución del código
	}
	public function finalizarEvento(){
		switch($this->tipo){
			case TiposEventos::CONSTRUCCION:
				$edificios=new Edificios($this->idUsuario);
				switch ($this->idObjetivo){
					case 1: $edificios->mina_c++;//pasar de string a int
						break;
					case 2: $edificios->fabrica_p++;
						break;
					case 3: $edificios->cuartel++;
						break;
					case 4: $edificios->laboratorio++;
						break;
					case 5: $edificios->tec_pvc++;
						break;
					case 6: $edificios->tec_carbono++;
						break;
					case 7: $edificios->tec_aleacion++;
						break;
					case 8: $edificios->tec_diamante++;
						break;
				}
				//var_dump($edificios);
				//Modifico la BBDD
				$_SESSION['edificios']=serialize($edificios);
				$edificios->guardarEdificios($this->idUsuario);
				break;
			case TiposEventos::TROPAS:
				//Calcular el numero de tropas construidas
				$unidad=new Unidad($this->idObjetivo);
				$numTropas=$this->cInvertido/$unidad->carbonInicial;
				//----------------------------------------
				$tropas=new Tropas($this->idUsuario);
				switch ($this->idObjetivo){
					case 1: $tropas->troglodita+=$numTropas;//pasar de string a int
						break;
					case 2: $tropas->espadachin+=$numTropas;
						break;
					case 3: $tropas->tirachinas+=$numTropas;
						break;
					case 4: $tropas->caballero+=$numTropas;
						break;
					case 5: $tropas->arquero+=$numTropas;
						break;
					case 6: $tropas->jinete+=$numTropas;
						break;
					case 7: $tropas->mago+=$numTropas;
						break;
					case 8: $tropas->pinguino+=$numTropas;
						break;
				}
				$_SESSION['tropas']=serialize($tropas);
				$tropas->guardarTropas($this->idUsuario);
				break;
			case TiposEventos::ATAQUE:
				break;
		}
	}
	public function getPuntos(){
		return $this->cInvertido+$this->pInvertido;
	}
}

class Eventos{
	public $eventos=Array();
	
	function __construct($id_usuario){
		$this->load($id_usuario);
	}
	public static function getEventos($idUsuario) {
		global $connection;
		$query = $connection->mysql->query("SELECT * FROM eventos WHERE id_usuario='".$idUsuario."'");
		return $query;
	}
	public function load($idUsuario){
		if($query=Eventos::getEventos($idUsuario)){
			while($data=$query->fetch_array(MYSQL_ASSOC)){
				$evento=new Evento();
				$evento->newEvento($data['f_inicio'],$data['f_final'],$data['tipo'],
					$data['c_invertido'],$data['p_invertido'],$data['descripcion'],
					$data['id_objetivo'],$data['id_usuario'],$data['id_evento']);
				date_default_timezone_set('Europe/Madrid');
				$this->eventos[$data['tipo']]=$evento;
			}
			return true;
		} else return false;
	}
	public function actualizarEventos(){
		foreach($this->eventos as $tipo=>$evento){
			if($evento->estaFinalizado()){
				$evento->finalizarEvento();
				Evento::deleteEvento($evento->idEvento);
			}
		}
	}
}

class Lock{
	public $troglodita=false;
	public $espadachin=false;
	public $tirachinas=false;
	public $caballero=false;
	public $arquero=false;
	public $jinete=false;
	public $mago=false;
	public $pinguino=false;
	public $mina_c=false;
	public $fabrica_p=false;
	public $cuartel=false;
	public $laboratorio=false;
	public $tec_pvc=false;
	public $tec_carbono=false;
	public $tec_aleacion=false;
	public $tec_diamante=false;
	
	public function update(){
		$edificios=unserialize($_SESSION['edificios']);
		//$edificios=new Edificios();
		//REQUISITOS DE LAS TROPAS
		//Requisitos troglodita
		if($edificios->cuartel>=2){
			$this->troglodita=true;
		}
		//Requisitos espadachin
		if($edificios->cuartel>4 && $edificios->tec_pvc>3){
			$this->espadachin=true;
		}
		//Requisitos tirachinas
		if($edificios->cuartel>3){
			$this->tirachinas=true;
		}
		//Requisitos caballero
		if($edificios->cuartel>6 && $edificios->tec_pvc>5 && $edificios->tec_carbono>2){
			$this->caballero=true;
		}
		//Requisitos arquero
		if($edificios->cuartel>5 && $edificios->tec_pvc>6){
			$this->arquero=true;
		}
		//Requisitos jinete
		if($edificios->cuartel>7 && $edificios->tec_pvc>6 && $edificios->tec_carbono>4 && $edificios->tec_aleacion>2){
			$this->jinete=true;
		}
		//Requisitos mago
		if($edificios->cuartel>8 && $edificios->tec_pvc>8 && $edificios->tec_carbono>6 && $edificios->tec_aleacion>5 && $edificios->tec_diamante>2){
			$this->mago=true;
		}
		//Requisitos pinguino
		if($edificios->cuartel>10 && $edificios->tec_pvc>10 && $edificios->tec_carbono>9 && $edificios->tec_aleacion>8 && $edificios->tec_diamante>5){
			$this->pinguino=true;
		}
		//REQUISITOS DE LOS EDIFICIOS
		//Requisitos de los recursos
		$this->mina_c=true;
		$this->fabrica_p=true;
		//Requisitos del cuartel
		if($edificios->mina_c>5 && $edificios->fabrica_p>3){
			$this->cuartel=true;
		}
		//Requisitos del laboratorio
		if($edificios->mina_c>9 && $edificios->fabrica_p>6 && $edificios->cuartel>2){
			$this->cuartel=true;
			$this->tec_pvc=true;
		}
		//Requisitos de tec_pvc
		if($edificios->mina_c>9 && $edificios->fabrica_p>6 && $edificios->cuartel>2 && $edificios->laboratorio>=1){
			$this->tec_carbono=true;
		}
		//Requisitos de tec_carbono
		if($edificios->mina_c>15 && $edificios->fabrica_p>10 && $edificios->cuartel>5 && $edificios->laboratorio>3 && $this->tec_pvc){
			$this->tec_carbono=true;
		}
		//Requisitos de tec_aleacion
		if($edificios->mina_c>20 && $edificios->fabrica_p>14 && $edificios->cuartel>8 && $edificios->laboratorio>5 && $this->tec_carbono){
			$this->tec_aleacion=true;
		}
		//Requisitos de tec_diamante
		if($edificios->mina_c>25 && $edificios->fabrica_p>20 && $edificios->cuartel>9 && $edificios->laboratorio>7 && $this->tec_aleacion){
			$this->tec_diamante=true;
		}
	}
	public function getAtributoPosicion($id,$isTropa){
		$id--;
		if(!$isTropa){
			$id+=8;
		}
		$array=array_values(get_object_vars($this)); //Obtengo un array asociativo y lo parseo a numerico
		return $array[$id];
	}
}
?>